
// require() 中存在相对路径默认相对于 当前文件
let path = require("path");
// console.log(path);

// __dirname   返回当前文件所在的文件夹(目录)路径
// __filename  返回当前文件路径
// process.cwd()  返回node的工作路径(终端启动时所在目录)

// console.log(__dirname);
// console.log(__filename);
// console.log(process.cwd());


// 路径解析
var str = __filename; // C:\Users\huaishuang\Desktop\2308\node\official\path.js

/*
    path.dirname(testPath); //返回路径中代表文件夹的部分
    path.basename(testPath); //返回路径中代表文件的部分
    path.extname(testPath); //返回路径中代表文件后缀的部分
    path.parse(testPath); // 将路径解析为路径对象
*/

// var obj = path.parse(str);
// console.log(obj);


// var result = path.dirname(str);
// console.log(result);

// var result = path.basename(str);
// console.log(result);

// var result = path.extname(str);
// console.log(result);


// 路径拼接

// path.resolve([from ...], to) 将 to 参数解析为绝对路径，给定的路径的序列是从右往左被处理的，后面每个 path 被依次解析，直到构造完成一个绝对路径。
// 注意：
// (1) 如果不添加起始路径(from),默认于 node程序启动位置作为起始路径(终端启动的位置)  => 最终解析为绝对路径
// (2) 如果使用/ 根路径 => 从当前位置停止向前解析,直接返回盘符的开始的路径

// var result = path.resolve("./1.js");  // C:\Users\huaishuang\Desktop\2308\node\1.js
// console.log(result);

// // 等价于
// var result = path.resolve(process.cwd(), "./1.js");
// console.log(result);

// 相对于当前文件所在目录做路径拼接
// var result = path.resolve(__dirname, "./1.js");
// console.log(result);


// var result = path.resolve(__dirname, "a", "b", "./1.js");
// console.log(result);

// var result = path.resolve(__dirname, "a", "/b", "./1.js");  // /b => 根目录下的b文件夹   c://b/1.js
// console.log(result);


// path.join() 方法使用特定于平台的分隔符作为定界符将所有给定的 path 片段连接在一起，然后规范化生成的路径(可以是绝对路径,可以是相对路径)


var result = path.join("./1.js");
console.log(result);

var result = path.join("a", "b", "./1.js");
console.log(result);


var result = path.join(__dirname, "a", "b", "./1.js");  // C:\Users\huaishuang\Desktop\2308\node\official\a\b\1.js
console.log(result);


// C:/Users/huaishuang/Desktop/2308/node/official/a/b/1.js
var result = path.join(__dirname, "a", "/b", "./1.js");  // 此处/b还是相对路径(和前面路径拼接) C:\Users\huaishuang\Desktop\2308\node\official\a\b\1.js
console.log(result);

